package sudoku.client.presen.componentes;

import javax.swing.JPanel;
import sudoku.client.presen.IVentanaJugador;


public class JPKenken extends JPanel {

    private JPCuadricula jpc11 = null;
    private JPCuadricula jpc12 = null;
    private JPCuadricula jpc21 = null;
    private JPCuadricula jpc22 = null;
    
    
	public JPKenken (IVentanaJugador ventana) {
		super();
		initialize();
		this.ventanaJugador=ventana;
		jpc11.setVentanaJugador(ventana); jpc11.setIdCuadricula((byte) 0);
		jpc12.setVentanaJugador(ventana); jpc12.setIdCuadricula((byte) 1);
		jpc21.setVentanaJugador(ventana); jpc21.setIdCuadricula((byte) 2);
		jpc22.setVentanaJugador(ventana); jpc22.setIdCuadricula((byte) 3);
		String kenken="";
		for (int i=0; i<36; i++)
			kenken+="0";
	}

	/**
	 * This is the default constructor
	 * @param sudoku
	 * @param id
	 */
	public JPKenken(String kenken, IVentanaJugador ventana) {
		this(ventana);
		initialize();
		load(kenken);
	}
	
	public void load(String kenken) {
		JPCuadricula j=null;
		int fila=0, columna=-1;
		for (int i=0; i<kenken.length(); i++) {
			int idCuadricula=i/9;
			if (idCuadricula>0 && i%9==0) {
				fila=0;
				columna=0;
			} else {
				columna++;
				if (columna==3) {
					fila++;
					columna=0;
				}
			}
			char c=kenken.charAt(i);
			switch (idCuadricula) {
				case 0 : j=jpc11; break;
				case 1 : j=jpc12; break;
				case 2 : j=jpc22; break;
				case 3 : j=jpc21; break;
			}
			j.putValue(c, fila, columna);
			i++;
			String casilla = "" + kenken.charAt(i);
			j.pinta(Integer.parseInt(casilla), fila, columna);
		}
	}
	
	/**
	 * @param c
	 * @param fila
	 * @param columna
	 */
	private void coloca(char c, int fila, int columna) {
		JPCuadricula cuadricula=null;
		int filaCuadricula=fila/3;
		int columnaCuadricula=columna/3;
		int filaCasilla=fila%3;
		int columnaCasilla=columna%3;
		if (filaCuadricula==0) {
			if (columnaCuadricula==0) {
				cuadricula=this.jpc11;
			} else if (columnaCuadricula==1) {
				cuadricula=this.jpc12;
			} 
		} else if (filaCuadricula==1) {
			if (columnaCuadricula==0) {
				cuadricula=this.jpc21;
			} else if (columnaCuadricula==1) {
				cuadricula=this.jpc22;
			} 
		}
		cuadricula.putValue(c, filaCasilla, columnaCasilla);
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private  void initialize() {
		this.setLayout(null);
		this.setSize(338, 294);
		this.add(getJpc11(), null);
		this.add(getJpc12(), null);
		this.add(getJpc21(), null);
		this.add(getJpc22(), null);
	}

    /**
     * This method initializes JPCuadricula	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp11"
     */
    private JPCuadricula getJpc11() {
        if (jpc11 == null) {
            jpc11 = new JPCuadricula();
            jpc11.setBounds(5, 5, 96, 87);
        }
        return jpc11;
    }

    /**
     * This method initializes jp12	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp12"
     */
    private JPCuadricula getJpc12() {
        if (jpc12 == null) {
            jpc12 = new JPCuadricula();
            jpc12.setBounds(101, 5, 95, 87);
        }
        return jpc12;
    }

    /**
     * This method initializes jp13	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp13"
     */
    private JPCuadricula getJpc21() {
        if (jpc21 == null) {
            jpc21 = new JPCuadricula();
            jpc21.setBounds(5,92, 96, 86);
        }
        return jpc21;
    }

    /**
     * This method initializes jp21	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp21"
     */
    private JPCuadricula getJpc22() {
        if (jpc22 == null) {
            jpc22 = new JPCuadricula();
            jpc22.setBounds(101, 92, 96, 86);
        }
        return jpc22;
    }

    public String getKenken() {
		String result="";
		result+=jpc11.getNumeros() + jpc12.getNumeros() + jpc21.getNumeros() + 
		jpc22.getNumeros();
		return result;
	}

	/**
	 *  
	 * @uml.property name="ventanaJugador"
	 * @uml.associationEnd inverse="jPTablero:sudoku.client.presen.IVentanaJugador" multiplicity="(0 1)"
	 * 
	 */
	private IVentanaJugador ventanaJugador;

	/**
	 *  
	 * @uml.property name="ventanaJugador"
	 * 
	 */
	public IVentanaJugador getVentanaJugador() {
		return ventanaJugador;
	}

	/**
	 *  
	 * @uml.property name="ventanaJugador"
	 * 
	 */
	public void setVentanaJugador(IVentanaJugador ventanaJugador) {
		this.ventanaJugador = ventanaJugador;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"


